草庐IT

C++ 对和指针

全部标签

c# - 如何从 C# 访问将指针作为输入参数的 C++ 函数

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Runtime.InteropServices;namespacePatternSequencer{classVersion{publicstringmajorVersion;publicstringminorVersion;ushort*pmajorVersion;ushort*pminorVersion;ulongstatus;[DllImport(@"c:\DOcuments\Myapp.dll",Ca

c++ - std::copy 用于动态分配的指针

这可能是一个非常新手的问题。我正在处理的类(我们称之为MyClass)包含以下变量intnbins;double*bins;//=newdouble[nbins+i]因为我正在实现一个复制构造函数MyClass(constMyClass&source)我需要复制source.bins。我打算使用algorithm中的std::copy,但我发现的所有示例都展示了如何复制静态数组,如doublebins[]=。..或标准数据结构,如std::vector。我找不到任何示例,其中std::copy用于像double*bins=newdouble[nbins+i]这样的指针。所以,我的问题是

c++ - 指针参数和数组参数有区别吗?

void方法(double*v)void方法(doublev[5])这两者有什么区别吗?第二个是否更具体,如v中的长度被限制为5个元素? 最佳答案 当声明为参数类型时,数组会退化为指针类型。在你的例子中,voidmethod(doublev[5]);这里5根本没有任何作用,它是如此的微不足道以至于你可以完全省略它,而是写成这个:voidmethod(doublev[]);这与前面的声明完全相同。由于衰减成指针,所以上面两个完全一样:voidmethod(double*v);//becausearraydecaystopointer,

c++ - 为什么以及何时通过指针在 C++ 中传递类类型?

考虑以下代码:classAbstract{public:virtualvoidprintStuff()=0;};classDerived:publicAbstract{public:voidprintStuff(){printf("Stuff\n");}};现在,假设我想创建一个使用抽象类中的printStuff方法的函数。在我了解到在C++中只有一种方法是可能的之前,我认为会有两种方法:一种不太明显的指针,一种更明显的方法,类似于您期望对int、char等做的事情:voidptr_function(Abstract*abs){//non-obviousabs->printStuff(

c++ - 为共享指针 move 构造函数和 = 运算符

说,我有一个类:classGameObject///headerfile{....std::shared_ptrtransform;}///cppfile//CopyCtorGameObject::GameObject(constGameObject&rhs):transform(rhs.transform){}//MoveCTorGameObject::GameObject(GameObject&&rhs):transform(std::move(rhs.transform)){}为具有shared_ptr成员变量的类创建move构造函数是否正确?或者我是否需要在move后调用rhs

c++ - 在c程序中获取指向C++函数库的指针

在C程序中,我需要获取对位于用C++编写的库中的函数的引用。这是代码的一部分//SomeCincludes#include...//ACstructureattributepointingtotheC++functioninfoptr.EXT_meshAdapt=&meshAdapt;问题是编译器告诉我存在对meshAdapt的undefinedreference,而当我对C库执行相同操作时没有问题。在此thread我看到我们可以通过制作包装器在C中调用C++函数。但是有没有一种方法可以在不制作包装器的情况下引用C++函数? 最佳答案

C++将函数指针分配给另一个

我想做一个存储函数指针的类,但是当我想将它们存储在成员变量中时,我得到了这个错误:invaliduseofmemberfunction(didyouforgetthe'()'?)¿我的错误在哪里?classButton{public:Button(PS3USB*ps3,ButtonEnumbutton,void(*onPress)(void)=nullptr,void(*onRelease)(void)=nullptr){PS3=ps3;status=false;ERROR--->onPressFunction=onPress;onReleaseFunction=onRelease;g

c++ - 指向引用的指针和指向实际变量的指针可以被视为相同吗?

我最近在我的代码库中看到了下面的代码(下面给出了简化版本)并且产生了这样的疑问:classB;classA{public:A():m_A("testA"){}B&getB(){returnm_B;}B*getBPtr()//==>writtentoexplaintheproblemclearly{return&m_B;}private:Bm_B;};classB{public:B(conststd::string&name):m_Name(name){}std::stringgetName()const{returnm_Name;}private:std::stringm_Name;}

c++ - 如何使用 boost lambda 用新对象填充指针 vector

我最近开始使用boostlambda,我想我会尝试在它会/应该使事情更容易阅读的地方使用它。我有一些类似下面的代码std::vectorv;for(inti=0;i稍后,删除它...std::for_each(v.begin(),v.end(),boost::lamda::delete_ptr());整齐地整理。但是,我想我应该尝试使用lambda来“lambda化”vector的总体......然后烟火开始了......我试过了..std::generate_n(v.begin(),20,_1=newX());但这引发了各种编译器错误。实现此目标的最佳“lambda”方式的任何想法。

c++ - 指针运算符的正式名称

在指针上下文中,运算符*和&的正式名称是什么?它们似乎经常分别被称为解引用运算符和寻址运算符,但不幸的是,标准中关于一元运算符的部分没有命名它们。我真的不想再命名&address-of了,因为&返回一个指针,而不是地址。(见下文)标准对此非常明确:Theresultoftheunary&operatorisapointertoitsoperand.Symmetry建议命名为&referenceoperator这有点不幸,因为它与C++中的引用发生冲突。&返回一个指针这一事实表明指针运算符。是否有任何官方消息来源可以证实这些(或其他)命名?指针与地址指针是一种语言机制,而地址是一种实现细